package org.biubiu0002.baiblog.core.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.biubiu0002.baiblog.core.model.entity.SysUserEntity;

import java.util.List;

/**
 * 用户表
 * 
 * @author biubiu0002
 * @email 1007918011@qq.com
 * @date 2022-05-06 00:50:37
 */
@Mapper
public interface SysUserDao extends BaseMapper<SysUserEntity> {

    /**
     * 获取用户uid拥有的角色列表
     * @param userUid userUId
     * @return roleList
     */
    List<String> selectRolesByUserUid(String userUid);

    /**
     * 根据用户名 角色类型获取用户
     * @param username 用户id
     * @param type 角色id
     * @return
     */
    SysUserEntity selectUserByUsernameAndType(@Param("username") String username, @Param("type") int type);

    /**
     * 根据用户手机号 角色类型获取用户
     * @param phone 手机号
     * @param type 角色id
     * @return
     */
    SysUserEntity selectUserByPhoneAndType(@Param("phone") String phone, @Param("type") int type);

    /**
     * 根据用户邮箱 角色类型获取用户
     * @param email 邮箱
     * @param type 角色id
     * @return
     */
    SysUserEntity selectUserByEmailAndType(@Param("email") String email, @Param("type") int type);


    /**
     * 保存或更新用户
     * @param user 要保存到用户表中的用户
     */
    void saveOrUpdate(@Param("user") SysUserEntity user);

    /**
     * 更新用户信息
     * @param sysUserEntity
     */
    void updateUser(@Param("user") SysUserEntity sysUserEntity);

    /**
     * 更新用户状态
     * @param userUid 用户uid
     * @param status 状态
     */
    void updateUserStatus(@Param("userUid") String userUid, @Param("status") Integer status);

    List<SysUserEntity> selectUserByUsernameCollisionLike(String name);
}
